from PIL import Image, ImageDraw
import os

def create_favicon():
    # 创建一个 32x32 的图像（标准 favicon 尺寸）
    size = 32
    img = Image.new('RGBA', (size, size), (0, 0, 0, 0))
    draw = ImageDraw.Draw(img)
    
    # 定义颜色
    primary_color = (13, 110, 253)  # Bootstrap primary blue (#0D6EFD)
    white = (255, 255, 255)
    
    # 绘制圆形背景
    padding = 2
    draw.ellipse([padding, padding, size-padding, size-padding], fill=primary_color)
    
    # 绘制播放按钮三角形
    triangle_padding = 8
    triangle_points = [
        (triangle_padding + 8, triangle_padding),  # 左上
        (size - triangle_padding, size//2),        # 右中
        (triangle_padding + 8, size - triangle_padding)  # 左下
    ]
    draw.polygon(triangle_points, fill=white)
    
    # 确保目标目录存在
    static_dir = os.path.join('app', 'static')
    os.makedirs(static_dir, exist_ok=True)
    
    # 保存为 ICO 文件
    img.save(os.path.join(static_dir, 'favicon.ico'), format='ICO', sizes=[(32, 32)])

    # 同时保存一个较大的 PNG 版本用于其他场景
    # 使用兼容性更好的 ANTIALIAS 替代 LANCZOS
    try:
        # 尝试使用新版本的 Resampling
        resampling_method = Image.Resampling.LANCZOS
    except AttributeError:
        try:
            # 尝试使用旧版本的 LANCZOS
            resampling_method = Image.LANCZOS
        except AttributeError:
            # 如果都不支持，使用 ANTIALIAS
            resampling_method = Image.ANTIALIAS

    img_large = img.resize((256, 256), resampling_method)
    img_large.save(os.path.join(static_dir, 'logo.png'), format='PNG')

if __name__ == '__main__':
    create_favicon() 